home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ETO Development Tools 4
/
ETO Development Tools 4.iso
/
Tools - Objects
/
SourceBug
/
1.0b1 Release Notes
next >
Wrap
Text File
|
1991-05-09
|
19KB
|
470 lines
SourceBug 1.0b1 Release Notes
Mike Lockwood
April 8, 1991
SourceBug is now feature frozen for the Beta release on the May E.T.O. Further
minor enhancements and improvements may occur after the Beta release.
Major enhancements will be postponed until after SourceBug 1.0 final is released.
SourceBug 1.0b1 is compatible with MPW 3.2 (from either the E.T.O #1 or E.T.O #2)
CDs, or MPW 3.2b6). SourceBug requires System 6.0.X with MultiFinder 6.1b9, or System 7.0b4 or
later. System 7.0b5 or later is recommended if available, since there are some
annoying bugs in 7.0b4 (mainly, lost activate events, and a crash when stepping over SFGetFile).
SourceBug will not work with releases of System 7 before 7.0b4.
1.0b1 Changes
• SourceBug now detects and corrects for PascalObjects mistakenly described
as C++ pointer-based objects in the Sym File. This problem occurs
frequently in MacApp 3.0, due to forward references of classes in the
MacApp header files.
• Removed an improper assumption about the existence of Color QuickDraw.
SourceBug will now run on the Plus, SE, Classic, and Portable!
• Reenabled the code that evaluates variables that reside in 68881/68882
data registers (FP0 - FP7). Do not use SourceBug with System 7.0b4 or
7.0b5 if you want to use this feature. There were some problems with the
Process Manager that weren't fixed until 7.0b6.
• The floating point data registers were moved to a separate window, since
many programmers don't use them.
• Fixed another bug that caused TRAP #5 (breakpoint) instructions to appear
in the disassembly.
1.0d31 Changes
• Fixed a bug that caused SourceBug to crash when handling a crash in
another program.
• Increased preferred size in 'SIZE' resource from 2000K to 2500K.
This was done because debugging MacApp 3.0 require more memory, and this
release is intended for distibution with MacApp 3.0a1.
1.0d30 Changes
• Added support for evaluating local variables located in FPU registers, and added the
FPU data registers FP0 - FP7 to the registers window. However, this was disabled in
1.0d30 due a bug in the 7.0b5 Process Manager.
• The status register is now displayed in the Registers Window as five check boxes.
This allows much easier manipulation of the 'X', 'N', 'Z', 'V', and 'C' bits in the CCR.
Messing with the supervisor or trace bits is no longer allowed.
• Fixed a bug introduced in 1.0d29 that kept the %?Anon unit and anonymous modules such as
glue code from being displayed in the Browser Window.
• SourceBug now handles out-of-date source files differently. The user is now given the
choice of:
1) Using the source anyway, even though the modification date does not match the symbolics,
2) Viewing assembler only, or
3) Locating the correct version of the source.
• Reenabled the "View as Str255" option for StringHandles. This was inadvertantly disabled
in 1.0d29.
• Fixed the evaluation of TLists and TSortedLists in MacApp 3.0. The elements of a TList
should now be visible.
• Sped up the drawing of the text in Code Views.
• Fixed some breakpoint related bugs that were introduced while rewriting some of the
breakpoint code between 1.0d28 and 1.0d29. These bugs in 1.0d29 sometimes resulted in:
1) crashes when the target application was terminated,
2) breakpoints not being reenabled when resuming an application, and
3) TRAP #5 instructions (breakpoints) showing up in disassembled code.
1.0d29 Changes
• Fixed a bug that caused occasional crashes when setting breakpoints.
• Made a minor change to the inspector hooks so the "New Inspector Window"
command works with MacApp 3.0d10.
• Added the "View as Fixed" and "View as Fract" options.
• Added support for the new "SysBreak", "SysBreakStr", and "SysBreakFunc"
traps defined in Types.h.
• Improved handling of SysErrors. SourceBug is now able to display a stack crawl
from the point at which SysError was called. A call to SysError no longer
automatically terminates the target application.
• Breakpoints are now displayed with 12 pixel icons. This change was made so
two breakpoints in a row do not overlap when drawn on the side of the code view.
• Fixed a problem that caused "View as Str255" not to work in certain cases.
In particular, you can now evaluate MacApp 3.0 Str255 classes by using
"View as Str255" on the fStr field in the Str255 class.
• Fixed another bug that caused the evaluation of register based shorts or
OSErrs to be wrong in certain cases.
• Breakpoints are now removed when SourceBug is entered, and restored when the
target application is resumed. This greatly simplifies disassembling code,
the stack crawl, and finding saved registers on the stack. It also solves
a problem killing MacApp 3.0 applications. SourceBug 1.0d28 would crash due
to a reentrancy problem related to MacApp's _ExitToShell patch.
• Fixed a problem that caused SourceBug to crash if the Sym file contained a
garbage name for a module.
• Rewrote the %_MethTables parsing code so it no longer relys on the ClassInfo
table. This should solve the infamous "%_MethTables parsing error".
• Fixed a bug that caused the program counter to be displayed one line ahead
when at statements that are only 2 bytes long (such as A-Traps without parameters).
• Added better error handling when the prefs file is corrupted. Old versions
would fail with a disk error on startup if the prefs file was corrupted.
1.0d28 Changes
• Reorganized some of SourceBug's internal data structures to optimize read-in
time. SourceBug 1.0d28 takes less than half the time than earlier versions
to open medium sized MacApp applications.
• Refixed the problem that caused breakpoints and the program counter to be
displayed on the wrong line when displaying assembler source.
1.0d27 Changes
• Fixed a bug that caused the code view selection to be drawn improperly
when selecting and autoscrolling.
• If the Sym file has the full path name for a source file, SourceBug now
uses only the file name for the source file. This allows the developer
to debug her application on a different computer than the computer on
which it was built.
• Fixed a bug that caused a crash when displaying large character arrays.
• Fixed a bug that sometimes caused breakpoints set in source code to be
invisible when viewed in assembler.
1.0d26 Changes
• When toggling between alphabetical and hierarchical listing of classes and
compilation units, the selected class or compilation unit is retained.
• SourceBug now shows class names in variable views when displaying a handle
to another object.
• SourceBug now reads the entire name and module tables of the Sym file
before read time. This results in a 20% - 40% cut in read in time.
These tables make up about 25% - 30% of the sym file.
• Added "View As" options. These allow you to display integers as decimals
or hexadecimals, and strings as either C-Strings or Pascal Strings.
Warning: This feature has not been fully debugged!
• Added clipboard support. You can now copy the selected text in a code view
or the contents of a variable view to the clipboard.
• Implemented the "Select All" command for code views.
• Stopped using validMacsBugSymbol for reading class names from the
%_MethTables segment. validMacsBugSymbol was not always recognizing
the class names as valid.
1.0d25 Changes
• Fixed a bug that was introduced as a side effect in 1.0d24.
Clicking in the side view caused the breakpoint to be set one line above
where the user intended to set it.
• Fixed another bug that occured when evaluating TLists.
• Fixed a bug evaluating fields of objects in C++ code (such as evaluating
fDocument in the source for a TView method written in C++).
1.0d24 Changes
• Added compilation units to the class list in the browser window.
Now routines that are not classes of pascal-style objects are grouped
according to compilation unit. (The compilation unit of a routine is
the pascal UNIT that contains it. If a routine is not in a pascal UNIT,
the compilation unit is the source file that contains its implementation).
• SourceBug now keeps a stack of places where it steps over JSRs. This means
that if you step over a function call and hit a breakpoint while in the
in the function you stepped over, you can execute the "Go" command and
you will stop again after the function call you were stepping over.
Since SourceBug keeps these in a stack, SourceBug remembers multiple functions
you are stepping over.
• Fixed a bug that occured when evaluating TLists.
• Modified the 'obit' AppleEvent handler to reflect changes in the 7.0b4
Process Manager
• Made minor changes to the source so the SourceBug source code will compile
with MPW 3.2b6
• SourceBug now uses validMacsBugSymbol (from DisasmLookup.h) to read class
names in the %_MethTables segment. This routine provides better error
checking than previous SourceBugs.
• Added an failure message that will occur if the %_MethTables segment is invalid.
• Fixed a bug that caused breakpoints and the PC to be displayed one line too
high in assembler source code.
• Fixed a problem that occured when stepping over %_OBNEW calls
• Disabled "Enter Low-level Debugger" when the pc is at a breakpoint.
The user is told to clear or step past the breakpoint before entering
the low-level debugger.
1.0d23 Changes
• Added support for handling SysErrors.
• Fixed a bug that occured when evaluating TLists.
1.0d22 Changes
• Added support for evaluating local variables of routines further up in the
stack crawl. Evaluation of register-based locals further up the stack is
now possible in most cases
• Removed several bugs that caused evaluation to be inaccurate.
• Removed the AVL tree classes. Performance testing showed they were only
providing a 10% improvement in parse time and were significantly increasing
the size of many classes, increasing overall memory requirements.
A future version of SourceBug will use some other optimization techniques.
• Object creation and deletion events are now cached so a shallow context
switch is not required each time an object is created or deleted. 1.0d21
was much slower than 1.0d19 or 1.0d20 because of this problem.
• Fixed a bug that occasionally caused a crash when closing the browser window.
1.0d21 Changes
• SourceBug now performs a shallow context switch when handling exceptions
(or breakpoints) in the target application. The decision whether or not
to handle the exception is made in this state, since making this decision
may require some calculation that results in Memory Manager calls.
1.0d20 Changes
• Modified low-level Process Manager interface code for 7.0b4 compatibility.
• Reenabled support for System 7 Virtual Memory. Debuggers now work with
VM under System 7.0b4.
• Added the "Find Source for Code" feature, which displays the name of
the source file for the foremost code view. This feature is useful when
you find a bug in a certain routine in the target application and need to
know which source file it is in so you can fix it!
1.0d19 Changes
• Removed a bug that caused SourceBug to crash when it failed to read in
the symbolics information for an application.
• Removed a bug that caused SourceBug to crash when closing the browser window
(it seemed to occur only if an inspector window was open).
• The inspector now shows 32 bit rather than 24 bit addresses in the instance
list pane. This is helpful when running in 32-bit addressing on a Macintosh
with more than 16 meg of ram.
• All object instances are now removed from the inspector when the target
application terminates. Before, when relaunching an application, instances
from previous executions of the target application remained in the inspector.
1.0d18 Changes
• Fixed a bug that involved stepping into routines that caused a LoadSeg
call to get executed.
• Fixed a bug that limited the "Find Code for Selection" command to work
only when the target application was running.
1.0d16/1.0d17 Changes
• Changed the icon to a picture of a SourceBug. Since the application signature
has not changed, you may have to rebuild your desktop to see it.
Throw away old versions of MikesBug to avoid Desktop Manager confusion.
• Added support for the "-model far" Linker option. This includes:
1) class ids can now be 4 bytes instead of 2 bytes (particularly
important in the inspector)
2) the %_MethTables segment is in a different format
3) Stepping over _LoadSeg calls when "stepping into" is a little different
Inspector support has not yet been tested under "-model far".
• SourceBug now checks source file modification dates. If it can't find a
source file with the same modification date as in the Sym file, it asks
the user to locate it. This is particularly helpful if you have multiple
versions of your application or MacApp on your disk.
• Breakpoints can be set and cleared by clicking on the side of a code view.
The "Set Breakpoint" and "Clear Breakpoint" menu items are gone.
• Added support for evaluating floating point types.
• Added support for evaluating constants.
• Added the "Set Breakpoint at Failure" feature.
• Added support for evaluating fields of a record within a pascal WITH statement
• Added a real About Box.
• Fixed some bugs that resulted in "???" being displayed as the top routine
in the stack crawl.
• Fixed a bug that caused the evaluation of pascal VAR parameters to be
inaccurate.
• Added the "Evaluate…" feature.
• Added the "Find Inherited" feature.
• Fixed the bug that caused SourceBug to fail when launching the target application
a second time.
• SourceBug now sends an 'oapp' AppleEvent when sublaunching the target application,
if the target application has the "isHighLevelEventAware" flag set in its
'SIZE' resource.
• Menu commands such as "Step" are now sent to the front code view, when
a variable view or the registers window is in front.
• When evaluating a TList or a descendant of TList, the elements of the list
are now shown. Double-clicking allows evaluation of the elements of a TList.
• The inspector window now uses TSizerViews.
• Fixed a bug that caused SourceBug to be very unreliable, but occured only
Under System 6.
1.0d15 Changes
• Fixed a bug that caused MikesBug to crash when closing a window created
by spawning a code view (option-clicking in a code view and dragging).
• Fixed some bugs related to debugging non-MacApp applications.
• Added the "Find Code For…" feature.
• Removed "Page Setup" and "Print" menu items, since printing is not supported
1.0d11 - 1.0d14 Changes
• MikesBug is now compatible with System 7.0b2. (Older versions would not
work because the MultiFinder version number changed between 7.0b1 and 7.0b2.
MikesBug now checks SysEnvirons to see if System 7 is running, and only
checks the MultiFinder version if System 6 is running).
• MikesBug will no longer run under System 7 virtual memory. A bug in the
7.0b2 Process Manager causes MikesBug to crash at the first breakpoint if
VM is on. For a long time, MikesBug has been appearing to run under 7.0b1
VM. However, it turns out that the 7.0b1 Process Manager has a similar bug
that was causing the Mac to stay in supervisor mode after hitting the first
breakpoint! Strangely, the System was able to operate in this state, and
caused only occasional problems that, until now, I was unable to attribute
to the Process Manager. MikesBug now refuses to run if VM is on.
VM support will be reenabled when a new version of System 7 is released
that supports debugging under VM.
• The link map is no longer used by the debugger, so you
need not generate a link map when you compile your program.
• Breakpoints can now be set and cleared by selecting cells
in a TGridView along the side of a code view. Multiple
breakpoints can be selected by clicking while holding down
the Shift or Command modifier keys.
• There is now a "Clear All BreakPoints" command.
• The disassembler now displays offsets relative to the beginning
of the routine you are viewing and now shows routine names for
BSR and JSR instructions.
• Windows now behave a little nicer when multiple monitors are installed.
If you drag the main browser window to a different monitor, the debugger
will "live" in that monitor, that is, all new windows will come up in that
monitor.
• There have also been many internal changes that might not be visible to
the user. A great deal of code has been rewritten to remove spaghetti and
make the debugger more maintainable and extensible.
Known Problems
• Support for 32-Bit Everything will probably break in the near future, since
there may be changes in its implementation. SourceBug currently works with
the MPW 3.2b6 implementation of 32-Bit everything.
• Evaluation of certain types are not yet implemented.
• When viewing the source for the main PROGRAM module of an application
written in Pascal (not MacApp), the entire file is displayed, including all
pascal procedures and functions declared in the PROGRAM scope. This makes
it difficult to locate the beginning of the main PROGRAM module, so
it might make sense to display only the source between the BEGIN and
END statements for the main PROGRAM module.
• Under System 7.0b4, the target application may not receive activate
events, causing the front window in the target application not to be active.
In MacApp, this may result in gTarget not being set to the main view of the
front window. This does not happen under System 6 or System 7.0b5.
• The disassembler does not show routine names for JSR and JMP instructions
if the target application was built using the "-model far" linker option.
• Variable views are not always updated properly when their size changes
(such as when they are changed to "Out of scope").
• SourceBug does not check for the existence of a low-level debugger such as
MacsBug or TMON before performing the "Enter low-level debugger" command.
• The stack crawl does not show the name of routines with no LINK/UNLK instructions,
such as glue code.
• SourceBug has not been tested with the "-wrap" linker option.
• SourceBug sometimes inadvertantly steps into glue code (such as code for
unsigned long multiplication) that the user did not intend to step into.
It is unclear how to handle this, since the user may sometimes want to
step into code that do not have symbolic information.